/*
 * datosEstudiantes.java
 *
 * Created on 14 de marzo de 2008, 11:00
 */

package Colecciones;
import Modelo.EstructuraFila;
import Modelo.AtributoTipo;
import Modelo.AtributoValor;
import Modelo.Path;
import Modelo.Fila;
import Modelo.EjecutaConsulta;
import Modelo.*;
import java.lang.reflect.*;
import com.puj.bdutils.ConnectorBD;
import java.sql.*;
/**
 *
 * @author  lmartine
 */
public class personalData {

    /*** Se debe revisar de acuerdo al cambio de version de People**/

    /** Crea una nueva instancia de la colecciÃ³n datosEstudiantes.
     * Esta clase es la encargada de interactuar con la Base de Datos.
     * En esta clase, se podra encontrar informaciÃ³n de estudiantes
     * registrados en PeopleSoft.
     */
    public personalData() {
    }

    /**  MÃ©todo que retorna los programas del estudiante en PeopleSoft en un objeto tipo Fila
     * @param p_emplid es el Id de la persona que se desea consultar
     * @return  Fila*/
    public static boolean insertarPersona(PersonalData persona)throws Exception{
        boolean salida=false;

        //try {
        Class clase;
        Object objeto;
        Field campo, campos[];
        Method metodo;
        Fila valor = new Fila() ;
        boolean ejecutarQuery = false;
        String insert = " insert into ps_personal_data ";
        String s_emplid = null;
        int ii=0;

        /*Aca solicitamos el id que se le asignara a la persona*/

        Connection conn = ConnectorBD.getConnection(Path.ruta);
        Statement s = null;
        Statement s3 = null;
        Statement s2 = null;
        conn.setAutoCommit(false);
        s = conn.createStatement();

        String selectEmplid =   " SELECT lpad(emplid_last_cs,7,'0') EMPLID " +
        " FROM sysadm.ps_installation_sa " +
        " FOR UPDATE  ";

        String updateEmplid = " update  sysadm.ps_installation_sa "+
        " set emplid_last_cs = emplid_last_cs+1 ";

        ResultSet rs = s.executeQuery(selectEmplid);
        if (rs.next()){
            s_emplid = (String)rs.getString("EMPLID");
            System.out.println("selecciono el emplid "+s_emplid);
        }
        //Fila f_emplid = EjecutaConsulta.Ejecutar2(consulta);

        if (s_emplid==null &&  s_emplid.length()==0) {
            conn.rollback();
            conn.close();
            ejecutarQuery = false;
            throw new Exception("No se logro recuperar un id para la persona");


        } else{
            persona.setPerConsecutivo(s_emplid);
            persona.setPerNombreCompleto(((AtributoValor)persona.getPerApellidos()).getValor()+","+((AtributoValor)persona.getPerNombre()).getValor());

        }

        /**/
        String campos_tabla = "( ";
        String values = " values ( ";
        //try {
        // Cargamos la clase
        clase = Class.forName("Modelo.PersonalData");
        //  try {
        objeto = clase.newInstance();
        EstructuraFila ef = personalData.getEstructuraPersona();
        for(int i=0; i < ef.size(); i++) {
            AtributoTipo at = (AtributoTipo)ef.getAtributoTipo(i);
            // System.out.println("Pos "+i+ " de "+ef.size() + " ef ="+at.getAtributo()+" "+at.getMetodo());
            metodo = clase.getMethod(at.getMetodo(),new Class[] {});
            String name = metodo.getName();

            try{
                //System.out.println(i+" "+metodo.getName());
                AtributoValor resultado = (AtributoValor) metodo.invoke(persona, null);
                if (at.getObligatoriedad()) {
                    if ( (resultado.getValor()!=null) && (((String)resultado.getValor()).length()>0)){
                        if (ii==0) {
                            campos_tabla += resultado.getAtributo()+" ";
                            if(((String)at.getTipo()).equalsIgnoreCase("S")) {
                                values += " '"+resultado.getValor()+"' ";
                            }
                            if(((String)at.getTipo()).equalsIgnoreCase("N")) {
                                values += " "+resultado.getValor()+" ";
                            }
                            if (((String)at.getTipo()).equalsIgnoreCase("D")) {
                                values += "'"+resultado.getValor()+"'"+" ";
                                values += " to_date('"+resultado.getValor()+"','mm/dd/yyyy')"+" ";
                            }
                        }
                        else {
                            campos_tabla +=  ","+resultado.getAtributo();
                            //values += ",'"+resultado.getValor()+"' ";
                            if(((String)at.getTipo()).equalsIgnoreCase("S")) {
                                values += ",'"+resultado.getValor()+"' ";
                            }
                            if(((String)at.getTipo()).equalsIgnoreCase("N")) {
                                values += ","+resultado.getValor()+" ";
                            }
                            if (((String)at.getTipo()).equalsIgnoreCase("D")) {
                                // values += "'"+resultado.getValor()+"'"+" ";
                                values += ", to_date('"+resultado.getValor()+"','mm/dd/yyyy')"+" ";
                            }
                        }
                        ii++;
                        if(!at.getMetodo().equalsIgnoreCase("getConsecutivo")){
                            ejecutarQuery = true;
                        }
                    }
                    else{
                        ejecutarQuery = false;
                        throw new Exception("El mÃ©todo "+at.getMetodo()+"() es de Obligatorio que tenga un valor asociado ");
                        //deberia lanzar una exception indicando el campo que no tiene valor asociado
                    }
                }
                // el campo no es obligatorio
                else{
                    // el campo trae dato
                    if ((resultado.getValor()!=null) && (((String)resultado.getValor()).trim().length()>0)) {

                        if (ii==0) {
                            campos_tabla += resultado.getAtributo()+" ";
                            //values += "'"+resultado.getValor()+"'"+" ";
                            if(((String)at.getTipo()).equalsIgnoreCase("S")) {
                                values += " '"+resultado.getValor()+"' ";
                            }
                            if(((String)at.getTipo()).equalsIgnoreCase("N")) {
                                values += " "+resultado.getValor()+" ";
                            }
                            if (((String)at.getTipo()).equalsIgnoreCase("D")) {
                                values += "'"+resultado.getValor()+"'"+" ";
                                values += " to_date('"+resultado.getValor()+"','mm/dd/yyyy')"+" ";
                            }
                        }
                        else {
                            campos_tabla +=  ","+resultado.getAtributo();
                            //values += ",'"+resultado.getValor()+"' ";
                            if(((String)at.getTipo()).equalsIgnoreCase("S")) {
                                values += ",'"+resultado.getValor()+"' ";
                            }
                            if(((String)at.getTipo()).equalsIgnoreCase("N")) {
                                values += ","+resultado.getValor()+" ";
                            }
                            if (((String)at.getTipo()).equalsIgnoreCase("D")) {
                                // values += "'"+resultado.getValor()+"'"+" ";
                                values += ", to_date('"+resultado.getValor()+"','mm/dd/yyyy')"+" ";
                            }
                        }
                        ii++;
                        if(!at.getMetodo().equalsIgnoreCase("getConsecutivo")){
                            ejecutarQuery = true;
                        }
                    }
                }
                // el campo no es obligatorio
            }catch (Exception e){ throw e;}
        }
        //}
        campos_tabla +=")";
        values +=")";
        if (ejecutarQuery) {
            System.out.println(insert.toLowerCase() + campos_tabla.toLowerCase());
            System.out.println(values);
            s2 = conn.createStatement();
            boolean insertPersona = false;
            try{
                insertPersona = s2.execute(insert+" " +campos_tabla+" "+values);

                System.out.println("Inserto persona con  "+s_emplid);
                 s3 = conn.createStatement();
                //Statement s1 = conn.createStatement();
                //if (){
                s3.execute(updateEmplid);
                    System.out.println("Actualizo el  "+s_emplid);
                    s.close();
                    s3.close();
                    s2.close();
                    conn.commit();
                    conn.close();


            }catch(Exception e){
                conn.rollback();
                    conn.close();
                System.out.println(e.getMessage());
            }


            s2.close();
            s3.close();
            s.close();
            conn.close();
            // s1.close();

        }
        conn.close();

               /* } catch (InstantiationException e) {
                    System.out.println("Error al instanciar el objeto. " + e);
                    throw e;
                } catch (IllegalAccessException e) {
                    System.out.println("Error al instanciar el objeto. " + e);
                    throw e;
                }
            } catch (ClassNotFoundException e) {
                System.out.println("No se ha encontrado la clase. " + e);
                throw e;
            }
        } catch ( Exception e){
            System.out.println("Error: en la consulta de datosEstudiantes.getProgramas " + e.toString());
            throw e;
        }*/
        return salida;
    }

    public static EstructuraFila getEstructuraPersona() throws Exception{

        EstructuraFila ef = new EstructuraFila();
        try {
        // campo de la BD,TIPO,si es obligatorio,metodo del personalData donde encuentro el valor
            ef.adicionar("EMPLID","S",true,"getPerConsecutivo");
            ef.adicionar("LAST_NAME","S",true,"getPerApellidos");
            ef.adicionar("FIRST_NAME","S",true,"getPerNombre");
            ef.adicionar("NAME","S",true,"getPerNombreCompleto");
            ef.adicionar("NAME_PREFIX","S",true,"getPerPrefijo");

            ef.adicionar("LAST_NAME_SRCH","S",true,"getPerApellidosSrch");
            ef.adicionar("FIRST_NAME_SRCH","S",true,"getPerNombreSrch");

            ef.adicionar("COUNTRY","S",true,"getPerPais");
            ef.adicionar("CITY","S",true,"getPerCiudad");
            ef.adicionar("STATE","S",true,"getPerDepto");
            ef.adicionar("COUNTRY_CODE","S",true,"getPerPaisCode");
            ef.adicionar("PHONE","S",true,"getPerTelefono");
            ef.adicionar("SEX","S",true,"getPerGenero");
            ef.adicionar("MAR_STATUS","S",true,"getPerEstadoCivil");
            ef.adicionar("BIRTHDATE","D",false,"getPerFechaNacimiento");
            ef.adicionar("BIRTHPLACE","S",true,"getPerCiudadNacimiento");
            ef.adicionar("BIRTHCOUNTRY","S",true,"getPerPaisNacimiento");
            ef.adicionar("BIRTHSTATE","S",true,"getPerDeptoNacimiento");
            ef.adicionar("CAMPUS_ID","S",true,"getPerCampusId");
            ef.adicionar("COUNTRY_NM_FORMAT","S",true,"getPerCountryNmFormat");
            ef.adicionar("NAME_INITIALS","S",true,"getPerNameInitials");
            ef.adicionar("NAME_SUFFIX","S",true,"getPerNameSuffix");
            ef.adicionar("NAME_ROYAL_PREFIX","S",true,"getPerNameRoyalPrefix");
            ef.adicionar("NAME_ROYAL_SUFFIX","S",true,"getPerNameRoyalSuffix");
            ef.adicionar("NAME_TITLE","S",true,"getPerNameTitle");
            ef.adicionar("MIDDLE_NAME","S",true,"getPerMiddleName");
            ef.adicionar("SECOND_LAST_SRCH","S",true,"getPerSecondLastSrch");
            ef.adicionar("SECOND_LAST_NAME","S",true,"getPerSecondLastName");
            ef.adicionar("NAME_AC","S",true,"getPerNameAc");
            ef.adicionar("PREF_FIRST_NAME","S",true,"getPerPrefFirstName");
            ef.adicionar("ADDRESS1","S",true,"getPerAddress1");
            ef.adicionar("ADDRESS2","S",true,"getPerAddress2");
            ef.adicionar("ADDRESS3","S",true,"getPerAddress3");
            ef.adicionar("ADDRESS4","S",true,"getPerAddress4");
            ef.adicionar("NUM1","S",true,"getPerNum1");
            ef.adicionar("NUM2","S",true,"getPerNum2");
            ef.adicionar("HOUSE_TYPE","S",true,"getPerHouseType");
            ef.adicionar("ADDR_FIELD1","S",true,"getPerAddrField1");
            ef.adicionar("ADDR_FIELD2","S",true,"getPerAddrField2");
            ef.adicionar("ADDR_FIELD3","S",true,"getPerAddrField3");
            ef.adicionar("COUNTY","S",true,"getPerCounty");
            ef.adicionar("POSTAL","S",true,"getPerPostal");
            ef.adicionar("GEO_CODE","S",true,"getPerGeoCode");
            ef.adicionar("IN_CITY_LIMIT","S",true,"getPerInCityLimit");
            ef.adicionar("COUNTRY_OTHER","S",true,"getPerCountryOther");
            ef.adicionar("ADDRESS1_OTHER","S",true,"getPerAddress1Other");
            ef.adicionar("ADDRESS2_OTHER","S",true,"getPerAddress2Other");
            ef.adicionar("ADDRESS3_OTHER","S",true,"getPerAddress3Other");
            ef.adicionar("ADDRESS4_OTHER","S",true,"getPerAddress4Other");
            ef.adicionar("CITY_OTHER","S",true,"getPerCityOther");
            ef.adicionar("COUNTY_OTHER","S",true,"getPerCountyOther");
            ef.adicionar("STATE_OTHER","S",true,"getPerStateOther");
            ef.adicionar("POSTAL_OTHER","S",true,"getPerPostalOther");
            ef.adicionar("NUM1_OTHER","S",true,"getPerNum1Other");
            ef.adicionar("NUM2_OTHER","S",true,"getPerNum2Other");
            ef.adicionar("HOUSE_TYPE_OTHER","S",true,"getPerHouseTypeOther");
            ef.adicionar("ADDR_FIELD1_OTHER","S",true,"getPerAddrField1Other");
            ef.adicionar("ADDR_FIELD2_OTHER","S",true,"getPerAddrField2Other");
            ef.adicionar("ADDR_FIELD3_OTHER","S",true,"getPerAddrField3Other");
            ef.adicionar("IN_CITY_LMT_OTHER","S",true,"getPerInCityLmtOther");
            ef.adicionar("GEO_CODE_OTHER","S",true,"getPerGeoCodeOther");
            ef.adicionar("PER_STATUS","S",true,"getPerPerStatus");
            //ef.adicionar("ORIG_HIRE_DT","D",false,"getPerOrigHireDt");
            ef.adicionar("AGE_STATUS","S",true,"getPerAgeStatus");
            //ef.adicionar("DT_OF_DEATH","D",false,"getPerDtOfDeath");
            ef.adicionar("HIGHEST_EDUC_LVL","S",true,"getPerHighestEducLvl");
            ef.adicionar("FT_STUDENT","S",true,"getPerFtStudent");
            ef.adicionar("REFERRAL_SOURCE","S",true,"getPerReferralSource");
            ef.adicionar("EMPL_REFERRAL_ID","S",true,"getPerEmplReferralId");
            ef.adicionar("SPECIFIC_REFER_SRC","S",true,"getPerSpecificReferSrc");
            ef.adicionar("HIGHLY_COMP_EMPL_P","S",true,"getPerHighlyCompEmplP");
            ef.adicionar("HIGHLY_COMP_EMPL_C","S",true,"getPerHighlyCompEmplC");
            ef.adicionar("RESUME_TEXT_FILE","S",true,"getPerResumeTextFile");
            ef.adicionar("QDRO_IND_YN","S",true,"getPerQdroIndYn");
            ef.adicionar("PER_TYPE","S",true,"getPerPerType");
            ef.adicionar("US_WORK_ELIGIBILTY","S",true,"getPerUsWorkEligibilty");
            ef.adicionar("MILITARY_STATUS","S",true,"getPerMilitaryStatus");
            ef.adicionar("CITIZEN_PROOF1","S",true,"getPerCitizenProof1");
            ef.adicionar("CITIZEN_PROOF2","S",true,"getPerCitizenProof2");
            ef.adicionar("SMOKER","S",true,"getPerSmoker");
            // ef.adicionar("MEDICARE_ENTLD_DT","D",false,"getPerMedicareEntldDt");
            ef.adicionar("BILINGUALISM_CODE","S",true,"getPerBilingualismCode");
            ef.adicionar("HEALTH_CARE_NBR","S",true,"getPerHealthCareNbr");
            ef.adicionar("HEALTH_CARE_STATE","S",true,"getPerHealthCareState");
            ef.adicionar("GUARDIAN_CHE","S",true,"getPerGuardianChe");
            ef.adicionar("MILITARY_STAT_GER","S",true,"getPerMilitaryStatGer");
            //ef.adicionar("EXPCTD_MILITARY_DT","D",false,"getPerExpctdMilitaryDt");
            ef.adicionar("HR_RESPONSIBLE_ID","S",true,"getPerHrResponsibleId");
            //ef.adicionar("ENTRY_DT_FRA","D",false,"getPerEntryDtFra");
            ef.adicionar("MILIT_SITUATN_FRA","S",true,"getPerMilitSituatnFra");
            ef.adicionar("CPAMID","S",true,"getPerCpamid");
            ef.adicionar("HONSEKI_JPN","S",true,"getPerHonsekiJpn");
            ef.adicionar("TAX_CODE_UK","S",true,"getPerTaxCodeUk");
            ef.adicionar("TAX_BASIS_UK","S",true,"getPerTaxBasisUk");
            ef.adicionar("MILITARY_STAT_ITA","S",true,"getPerMilitaryStatIta");
            ef.adicionar("MILITARY_TYPE_ITA","S",true,"getPerMilitaryTypeIta");
            ef.adicionar("MILITARY_RANK_ITA","S",true,"getPerMilitaryRankIta");
            // ef.adicionar("MILITARY_END_ITA","D",false,"getPerMilitaryEndIta");
            ef.adicionar("MILIT_SITUATN_ESP","S",true,"getPerMilitSituatnEsp");
            //ef.adicionar("SOC_SEC_AFF_DT","D",false,"getPerSocSecAffDt");
            ef.adicionar("LANG_CD","S",true,"getPerLangCd");
            ef.adicionar("YEARS_OF_EXP","S",true,"getPerYearsOfExp");
            ef.adicionar("APPLID","S",true,"getPerApplid");
            //ef.adicionar("APP_DT","D",false,"getPerAppDt");
            ef.adicionar("ON_DM_EM_DOSAVENOW","S",true,"getPerOnDmEmDosavenow");
            ef.adicionar("GVT_CRED_MIL_SVCE","S",true,"getPerGvtCredMilSvce");
            ef.adicionar("GVT_MILITARY_COMP","S",true,"getPerGvtMilitaryComp");
            ef.adicionar("GVT_MIL_GRADE","S",true,"getPerGvtMilGrade");
            ef.adicionar("GVT_MIL_RESRVE_CAT","S",true,"getPerGvtMilResrveCat");
            ef.adicionar("GVT_MIL_SEP_RET","S",true,"getPerGvtMilSepRet");
            //ef.adicionar("GVT_MIL_SVCE_END","D",true,"getPerGvtMilSvceEnd");
            //ef.adicionar("GVT_MIL_SVCE_START","D",false,"getPerGvtMilSvceStart");
            ef.adicionar("GVT_MIL_VERIFY","S",true,"getPerGvtMilVerify");
            ef.adicionar("GVT_PAR_NBR_LAST","N",true,"getPerGvtParNbrLast");
            ef.adicionar("GVT_UNIF_SVC_CTR","S",true,"getPerGvtUnifSvcCtr");
            ef.adicionar("GVT_VET_PREF_APPT","S",true,"getPerGvtVetPrefAppt");
            ef.adicionar("GVT_VET_PREF_RIF","S",true,"getPerGvtVetPrefRif");
            ef.adicionar("GVT_CHANGE_FLAG","S",true,"getPerGvtChangeFlag");
            ef.adicionar("GVT_DRAFT_STATUS","S",true,"getPerGvtDraftStatus");
            //ef.adicionar("GVT_YR_ATTAINED","D",true,"getPerGvtYrAttained");
            ef.adicionar("DISABLED_VET","S",true,"getPerDisabledVet");
            ef.adicionar("DISABLED","S",true,"getPerDisabled");
            //ef.adicionar("MAR_STATUS_DT","D",false,"getPerMarStatusDt");
            ef.adicionar("ETHNIC_GROUP","S",true,"getPerEthnicGroup");
            ef.adicionar("GVT_DISABILITY_CD","S",true,"getPerGvtDisabilityCd");
            ef.adicionar("GRADE","S",true,"getPerGrade");
            ef.adicionar("SAL_ADMIN_PLAN","S",true,"getPerSalAdminPlan");
            ef.adicionar("GVT_CURR_AGCY_EMPL","S",true,"getPerGvtCurrAgcyEmpl");
            ef.adicionar("GVT_CURR_FED_EMPL","S",true,"getPerGvtCurrFedEmpl");
            ef.adicionar("GVT_HIGH_PAY_PLAN","S",true,"getPerGvtHighPayPlan");
            ef.adicionar("GVT_HIGH_GRADE","S",true,"getPerGvtHighGrade");
            ef.adicionar("GVT_PREV_AGCY_EMPL","S",true,"getPerGvtPrevAgcyEmpl");
            ef.adicionar("GVT_PREV_FED_EMPL","S",true,"getPerGvtPrevFedEmpl");
            ef.adicionar("GVT_SEP_INCENTIVE","S",true,"getPerGvtSepIncentive");
            //ef.adicionar("GVT_SEP_INCENT_DT","D",false,"getPerGvtSepIncentDt");
            ef.adicionar("GVT_TENURE","S",true,"getPerGvtTenure");
            ef.adicionar("GVT_PAY_PLAN","S",true,"getPerGvtPayPlan");
            ef.adicionar("BARG_UNIT","S",true,"getPerBargUnit");
            ef.adicionar("ALTER_EMPLID","S",true,"getPerAlterEmplid");
            ef.adicionar("ADDRESS1_AC","S",true,"getPerAddress1Ac");
            ef.adicionar("ADDRESS2_AC","S",true,"getPerAddress2Ac");
            ef.adicionar("ADDRESS3_AC","S",true,"getPerAddress3Ac");
            ef.adicionar("CITY_AC","S",true,"getPerCityAc");
            ef.adicionar("VA_BENEFIT","S",true,"getPerVaBenefit");
            ef.adicionar("EXTENSION","S",true,"getPerExtension");
            ef.adicionar("DEATH_CERTIF_NBR","S",true,"getPerDeathCertifNbr");
            ef.adicionar("FERPA","S",true,"getPerFerpa");
            ef.adicionar("PLACE_OF_DEATH","S",true,"getPerPlaceOfDeath");

            // Este no es de persona         ef.adicionar("EFFDT","D",false,"getPerFechaEfectiva");

        }catch(Exception e){
            throw new Exception("(Tabla.getEstructuraFila EventosSector:1) "+ e.getMessage());
        }
        return ef;
    }


    public static EstructuraFila getEstructuraEmail() throws Exception{

        EstructuraFila ef = new EstructuraFila();
        try {
            // campo de la BD,TIPO,si es obligatorio,metodo del personalData donde encuentro el valor
           // ef.adicionar("EMPLID","S",true,"getPerConsecutivo");
            ef.adicionar("E_ADDR_TYPE","S",true,"getEmailTipo");
            ef.adicionar("EMAIL_ADDR","S",true,"getEmailCorreo");
            ef.adicionar("PREF_EMAIL_FLAG","S",true,"getEMailPreferido");

        }catch(Exception e){
            throw new Exception("(Tabla.getEstructuraEmail EstructyraEmail) "+ e.getMessage());
        }
        return ef;
    }

     public static EstructuraFila getEstructuraTelefono() throws Exception{

        EstructuraFila ef = new EstructuraFila();
        try {
           // ef.adicionar("EMPLID","S",true,"getPerConsecutivo");
            ef.adicionar("PHONE_TYPE","S",true,"getTelTipo");
            ef.adicionar("COUNTRY_CODE","S",true,"getTelCiudad");
            ef.adicionar("PHONE","S",true,"getTelNumero");
            ef.adicionar("EXTENSION","S",true,"getTelExt");
            ef.adicionar("PREF_PHONE_FLAG","S",true,"getTelPreferido");

        }catch(Exception e){
            throw new Exception("(Tabla.getEstructuraEmail EstructuraTelefono) "+ e.getMessage());
        }
        return ef;
    }

       public static EstructuraFila getEstructuraDireccion() throws Exception{

        EstructuraFila ef = new EstructuraFila();
        try {
           // ef.adicionar("EMPLID","S",true,"getPerConsecutivo");
            ef.adicionar("ADDRESS1_AC","S",true,"getPerAddress1Ac");
            ef.adicionar("ADDRESS2_AC","S",true,"getPerAddress2Ac");
            ef.adicionar("ADDRESS3_AC","S",true,"getPerAddress3Ac");
            ef.adicionar("CITY_AC","S",true,"getPerCityAc");
            ef.adicionar("REG_REGION","S",true,"getPerRegRegion");
            ef.adicionar("LOC_ADDR","S",true,"getPerLocAddr");
            ef.adicionar("LOC_ADDR_DATA","S",true,"getPerLocAddrData");
            ef.adicionar("LOC_ADDR_LINE","S",true,"getPerLocAddrLine");
            ef.adicionar("LOC_ADDR_TYPE","S",true,"getPerLocAddrType");
            ef.adicionar("ORG_LOCATION","S",true,"getPerOrgLocation");
            ef.adicionar("DESCR_EXT_ORG","S",true,"getPerDescrExtOrg");
            ef.adicionar("DESCR_ORG_LOCATION","S",true,"getPerDescrOrgLocation");
            ef.adicionar("MAINT_ADDR_MANUAL","S",true,"getPerMaintAddrManual");
            ef.adicionar("MAINT_OTHER_MANUAL","S",true,"getPerMaintOtherManual");
            ef.adicionar("ORG_CONTACT","S",true,"getPerOrgContact");
            ef.adicionar("CONTACT_NAME","S",true,"getPerNombreContacto");
            ef.adicionar("DATA_SOURCE","S",true,"getPerDataSource");
            ef.adicionar("SEASONAL_ADDR","S",true,"getPerSeasonalAddr");
            ef.adicionar("COUNTRY","S",true,"getPerPais");
            ef.adicionar("NUM2","S",true,"getPerNum2");
            ef.adicionar("POSTAL","S",true,"getPerPostal");
            ef.adicionar("EMPLID","S",true,"getPerEmplid");
            ef.adicionar("ADDRESS_TYPE","S",true,"getPerTipoDireccion");
            ef.adicionar("EFFDT","D",true,"getPerFechaEfectiva");
            ef.adicionar("EFF_STATUS","S",true,"getPerEffStatus");
            ef.adicionar("ADDRESS1","S",true,"getPerDireccion");
            ef.adicionar("ADDRESS2","S",true,"getPerApto");
            ef.adicionar("ADDRESS3","S",true,"getPerBarrio");
            ef.adicionar("ADDRESS4","S",true,"getPerComuna");
            ef.adicionar("CITY","S",true,"getPerCiudad");
            ef.adicionar("NUM1","S",true,"getPerNum1");
            ef.adicionar("HOUSE_TYPE","S",true,"getPerHouseType");
            ef.adicionar("ADDR_FIELD1","S",true,"getPerAddrField1");
            ef.adicionar("ADDR_FIELD2","S",true,"getPerAddrField2");
            ef.adicionar("ADDR_FIELD3","S",true,"getPerAddrField3");
            ef.adicionar("COUNTY","S",true,"getPerCounty");
            ef.adicionar("STATE","S",true,"getPerState");
            ef.adicionar("GEO_CODE","S",true,"getPerGeoCode");
            ef.adicionar("IN_CITY_LIMIT","S",true,"getPerInCityLimit");
            ef.adicionar("EXT_ORG_ID","S",true,"getPerExtOrgId");

        }catch(Exception e){
            throw new Exception("(Tabla.getEstructuraEmail EstructuraTelefono) "+ e.getMessage());
        }
        return ef;
    }

    /**  MÃ©todo que retorna los programas del estudiante en PeopleSoft en un objeto tipo Fila
     * @param p_emplid es el Id de la persona que se desea consultar
     * @return  Fila*/
    public  static synchronized String getEmplid(Connection conn) throws java.io.IOException ,Exception{
        String v_emplid = new String();
        Statement s = null;
        // Connection conn =  null;
        ResultSet rs = null;
        String consulta = " SELECT emplid_last_cs " +
        " FROM sysadm.ps_installation_sa " +
        " FOR UPDATE  ";

        EjecutaConsulta.Ejecutar(consulta);

        String salida = new String();

        try {
            //conn = ConnectorBD.getConnection(Path.ruta);
            //conn.setAutoCommit(false);
            s = conn.createStatement();
            rs = s.executeQuery(consulta);
            if (rs.next()) {
                v_emplid = (String)rs.getString("EMPLID_LAST_CS");
            }
            int i;
        }  catch(Exception e ) {
            s.close();
            rs.close();
            // conn.close();
            System.out.println("Error : " + e);
        }
        return salida;

    }


    public static void main(String[] args) {


        try{
            Path.ruta="L:/ColeccionesPeople/WEB-INF/classes";
            PersonalData p = new PersonalData();
            Colecciones.personalData pd =  new Colecciones.personalData();

            //p.setPerConsecutivo("0");
            p.setPerNombre("PATRICIA 2222222");
            p.setPerApellidos("IBANEZ 222222");
            p.setPerPrefijo("Miss");
            p.setPerDepto("1");
            p.setPerPais("Col");
            p.setPerCiudad(" Cali");
            p.setPerPaisCode("Col");
            p.setPerDireccion("Cll 18 No. 118-250");
            p.setPerTelefono("321 82 00" );
            p.setPerGenero("M" );
            p.setPerEstadoCivil("M");
            p.setPerFechaNacimiento("02/28/1972");
            p.setPerCiudadNacimiento("Santiago de Cali" );
            p.setPerPaisNacimiento("COL");
            p.setPerDeptoNacimiento("1" );
            p.setPerCampusId("11");

            // p.setFechaEfectiva("01/12/2008");
            Colecciones.personalData.insertarPersona(p);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }

    }


}


